再学WSAStartup()函数 您所在的位置:网站首页 windows sockets 接口 再学WSAStartup()函数

再学WSAStartup()函数

2023-05-28 04:28| 来源: 网络整理| 查看: 265

一、WSAStartup()函数以及DLL的加载 yuw2017的博客https://blog.51cto.com/u_12009752/1843745

WinSock(Windows Socket)编程依附于零碎供给的静态链接库(DLL),有两个版本: 较早的DLL是 wsock32.dll,明细为 28KB,对应的头文件为 winsock1.h; 最新的DLL是 ws2_32.dll,明细为 69KB,对应的头文件为 winsock2.h。

几乎一切的 Windows 操作 都曾经支撑 ws2_32.dll,所以你可以毫不犹疑地运用最新的 ws2_32.dll。

二、WSAStartup() 函数

int WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData);

wVersionRequested 为 WinSock 标准的版本号,低字节为主版本号,高字节为副版本号(修改版本号);

lpWSAData 为指向 WSAData 构造体的指针。

WSAStartup() 函数返回成功后,会将与 ws2_32.dll 有关的信息写入 WSAData 构造体变量。WSAData 的结构如下:

typedef struct WSAData { WORD wVersion; //ws2_32.dll 建议我们运用的版本号 WORD wHighVersion; //ws2_32.dll 支撑的最高版本号 //一个以 null 开头的字符串,用来阐明 ws2_32.dll 的完成以及厂商信息 char szDescription[WSADESCRIPTION_LEN+1]; //一个以 null 开头的字符串,用来阐明 ws2_32.dll 的形态以及设置装备摆设信息 char szSystemStatus[WSASYS_STATUS_LEN+1]; unsigned short iMaxSockets; //2.0今后不再运用 unsigned short iMaxUdpDg; //2.0今后不再运用 char FAR *lpVendorInfo; //2.0今后不再运用 } WSADATA, *LPWSADATA; 三、inet_ntoa函数 inet_ntoa函数,该函数是将十进制网络字节序转换为点分十进制IP格式,如果不用该函数,那么将无法正确打印出IP。

函数原型: char FAR* PASCAL FAR inet_ntoa( struct in_addr in); MSDN上本函数的原型描述为:unsigned long inet_addr( __in const char *cp);

in:一个表示Internet主机地址的结构。 四、错误代码 WSASYSNOTREADY 代码数值为10091,指出网络通信依赖的网络子系统还没有准备好。 WSAVERNOTSUPPORTED 代码数值为10092,表示所需的Windows Sockets API的版本未由特定的Windows Sockets实现提供。 WSAEINVAL 代码数值为10022,说明应用程序指出的Windows Sockets版本不被该DLL支持。 WSAEINPROGRESS 代码数值为10036,说明一个阻塞的Winsock调用正在进行中。 WSAEPROCLIM 代码数值为10067,说明已经达到了Windows Sockets实现所支持的任务数量的极限。 WSAEFAULT 代码数值为10014,说明lpWSADATA参数是一个无效的指针。


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有